﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Security.Cryptography;
using CompanyBussiness;

namespace Website.admin.Control
{
    public partial class cChangePass : System.Web.UI.UserControl
    {
        AccountManagement accountMana = new AccountManagement();
        CompanyBussiness.MD5 md5 = new CompanyBussiness.MD5();
        CompanyBussiness.Account account = new Account();

        protected void Page_Load(object sender, EventArgs e)
        {
            fail.Visible = false;
        }

        protected string checkPassword(string pass)
        {
            account=accountMana.GetAccountByUserName(Session[CONST.SESSION_ACCOUNTUSER].ToString());
            if (pass.Length < 6)
             {
                 if (!pass.Contains(account.UserName))
                 {
                     return "true";
                 }
                 else
                 {
                     return "Mật khẩu không được giống UserName hoặc chứa UserName !";
                 }
             }
            else
            {
                return "Mật khẩu phải có ít nhất 6 ký tự !";
            }
        }

        protected void btnSubmit_Click(object sender, EventArgs e)
        {
            try
            {
                CaptchaControl1.ValidateCaptcha(txtCapcha.Text.Trim());
                if (txtPassword.Text != "" && txtNewPassword.Text != "" && txtConfirm.Text!="")
                {
                    if (CaptchaControl1.UserValidated)
                    {
                        account=accountMana.GetAccountByUserName(Session[CONST.SESSION_ACCOUNTUSER].ToString());
                        if (account.Password != txtPassword.Text)
                        {
                            string node=checkPassword(txtNewPassword.Text);
                            if (node == "true")
                            {
                                if (txtNewPassword.Text == txtConfirm.Text)
                                {
                                    accountMana.UpdateAccount(int.Parse(account.AccountID.ToString()), account.UserName.ToString(), md5.EnMD5(txtNewPassword.Text), account.FirstName.ToString(), account.LastName.ToString(), account.Email.ToString(), account.Nick.ToString(), account.Address.ToString(), account.Phone.ToString(), Boolean.Parse(account.Gender.ToString()), account.Images.ToString(), Boolean.Parse(account.Roles.ToString()));
                                    Response.Redirect("Administrator.aspx");
                                }
                                else
                                {
                                    fail.Visible = true;
                                    lbError.Text = "Mật khẩu mới cần xác nhận lại !";
                                }
                            }
                            else
                            {
                                fail.Visible = true;
                                lbError.Text = node;
                            }
                                 
                        }
                        else
                        {
                            fail.Visible = true;
                            lbError.Text = "Bạn hãy nhập lại mật khẩu cũ !";
                            txtPassword.Focus();
                        }

                    }
                    else
                    {
                        fail.Visible = true;
                        lbError.Text = "Bạn phải nhập mã trong ảnh....";
                    }

                }
                else
                {
                    fail.Visible = true;
                    lbError.Text = "Bạn phải nhập đầy đủ thông tin !";
                    return;
                }

            }
            catch (Exception)
            {
                fail.Visible = true;
                lbError.Text = "Có lỗi Xin vui lòng thử lại !";
                return;
            }
        }
    }
}